--create database mysurvey;
--DROP database mysurvey;
use mysurvey
go
CREATE TABLE TB_ENTREVISTADO (
  idTB_ENTREVISTADO INTEGER NOT NULL identity(0,1),
  NOME VARCHAR(45) NULL,
  EMAIL VARCHAR(45) NULL,
  SOBRENOME VARCHAR(45) NULL,
  PRIMARY KEY(idTB_ENTREVISTADO)
);


CREATE TABLE TB_RESPONSAVEL (
  id_Responsavel INTEGER NOT NULL identity(0,1),
  nome VARCHAR(45) NOT NULL,
  email VARCHAR(45) NOT NULL,
  sobrenome VARCHAR(45) NOT NULL,
  PRIMARY KEY(id_Responsavel)
);

CREATE TABLE TB_SURVEY (
  id_Survey INTEGER NOT NULL identity(0,1),
  TB_RESPONSAVEL_id_Responsavel INTEGER NOT NULL ,
  Titulo VARCHAR(45) NOT NULL,
  Subtitulo VARCHAR(45) NOT NULL,
  Data_Criacao DATETIME NOT NULL,
  Data_fim DATETIME NULL,
  flag_ativo BIT NOT NULL,
  UnicaResposta BIT NOT NULL,
  RandomizeQuestoes BIT NOT NULL,
  SenhaAcesso VARCHAR(45) NULL,
  PRIMARY KEY(id_Survey),
  CONSTRAINT TB_SURVEY_FKIndex1
		FOREIGN KEY (TB_RESPONSAVEL_id_Responsavel) 
		REFERENCES  TB_RESPONSAVEL (id_Responsavel)
	);
GO 
CREATE INDEX TB_SURVEY_FKIndex1 ON TB_RESPONSAVEL (id_Responsavel);

CREATE TABLE TB_QUESTAO (
  id_Questao INTEGER NOT NULL identity(0,1),
  TB_SURVEY_id_Survey INTEGER NOT NULL,
  Tipo VARCHAR(10)  NULL,
  CONSTRAINT cons_quest CHECK  (Tipo IN ('OBJETIVA','SUBJETIVA')),
  Pergunta VARCHAR(max) NOT NULL,
  Img VARBINARY(MAX) NULL,
  Randomica BIT NULL DEFAULT 1,
  Obrigatoria BIT NULL DEFAULT 1,
  EhCodigo BIT  NULL,
  Linguagem VARCHAR(10),
  Codigo VARCHAR(MAX),
  PRIMARY KEY(id_Questao),
	CONSTRAINT TB_QUESTAO_FKIndex1
		FOREIGN KEY (TB_SURVEY_id_Survey) 
		REFERENCES  TB_SURVEY (id_Survey),
	
	);
GO 
CREATE INDEX TB_QUESTAO_FKIndex1 ON TB_SURVEY (id_Survey);
GO

CREATE TABLE TB_ITENS_DA_QUESTAO (
  idTB_ITENS_DA_QUESTAO INTEGER NOT NULL identity(0,1) ,
  TB_QUESTAO_id_Questao INTEGER NOT NULL,
  Item VARCHAR(max) NULL,
  PRIMARY KEY(idTB_ITENS_DA_QUESTAO),
  CONSTRAINT TB_ITENS_DA_QUESTAO_FKIndex1
	FOREIGN KEY (TB_QUESTAO_id_Questao) 
	REFERENCES  TB_QUESTAO (id_Questao)
);

GO 
CREATE INDEX TB_ITENS_DA_QUESTAO_FKIndex1 ON TB_QUESTAO (id_Questao);


CREATE TABLE TB_RESPOSTA (
  id_Resposta INTEGER NOT NULL identity(0,1),
  TB_ENTREVISTADO_idTB_ENTREVISTADO INTEGER  NOT NULL,
  TB_QUESTAO_id_Questao INTEGER NOT NULL,
  Resposta VARCHAR(max) NULL,
  Item VARCHAR(max) NULL,
  PRIMARY KEY(id_Resposta),
  	CONSTRAINT TB_RESPOSTA_FKIndex1
		FOREIGN KEY (TB_QUESTAO_id_Questao) 
		REFERENCES  TB_QUESTAO (id_Questao),
	CONSTRAINT TB_RESPOSTA_FKIndex2
		FOREIGN KEY (TB_ENTREVISTADO_idTB_ENTREVISTADO) 
		REFERENCES  TB_ENTREVISTADO (idTB_ENTREVISTADO)
	);
GO 
CREATE INDEX TB_RESPOSTA_FKIndex1 ON TB_QUESTAO (id_Questao);
CREATE INDEX TB_RESPOSTA_FKIndex2 ON TB_ENTREVISTADO (idTB_ENTREVISTADO);
GO





